<?php

require_once __DIR__ . '/abstract/AlunoController.php';
require_once __DIR__ . '/../util/AlunoEJAFiltro.php';
require_once __DIR__ . '/../util/AlunoEJAGeradorCSV.php';
require_once __DIR__ . '/../dao/SegmentoEJADAO.php';
require_once __DIR__ . '/../dao/SemestreEJADAO.php';
require_once __DIR__ . '/../dao/AlunoEJADAO.php';

/**
 * Description of AlunoEJAController
 *
 * @author Hyzandey
 */
class AlunoEJAController extends AlunoController {

    const BUSCA_VIEW = 'buscaAlunoEJA.phtml';
    const SEMESTRE = 'semestre';
    const SEMESTRE_LABEL = 'Semestre do EJA';
    const SEMESTRE_LIST = 'semestreList';
    const SEMESTRE_PREFIXO = 'Semestre: ';
    const SEGMENTO = 'segmento';
    const SEGMENTO_PREFIXO = 'Segmento: ';
    const SEGMENTO_LABEL = 'Segmento';
    const SEGMENTO_LIST = 'segmentoList';
    const TITULO_VIEW = 'Busca de Alunos da Educação de Jovens e Adultos';

    private $segmentoEJADAO;
    private $semestreEJADAO;

    protected function constroiDAOs() {
        parent::constroiDAOS();

        $this->segmentoEJADAO = new SegmentoEJADAO();
        $this->semestreEJADAO = new SemestreEJADAO();

        $this->alunoDAO = new AlunoEJADAO($this->filtro);
    }

    protected function constroiFiltro() {
        $this->filtro = new AlunoEJAFiltro();
    }

    protected function preencheFiltro() {
        parent::preencheFiltro();

        $this->filtro->setSegmento($this->getPost(self::SEGMENTO));
        $this->filtro->setSemestre($this->getPost(self::SEMESTRE));
    }

    protected function preencheListaCombos() {
        parent::preencheListaCombos();

        $this->insertViewInfo(array(
            self::SEGMENTO_LIST => $this->segmentoEJADAO->find()
        ));

        $this->insertViewInfo(array(
            self::SEMESTRE_LIST => $this->semestreEJADAO->find()
        ));
    }

    protected function getTituloView() {
        return self::TITULO_VIEW;
    }

    protected function isEJA() {
        return true;
    }

    protected function getNomeViewBusca() {
        return self::BUSCA_VIEW;
    }

    protected function getNomeCSVView() {
        return self::CSV_VIEW;
    }

    protected function getGeradorCSV($alunoLista) {
        return new AlunoEJAGeradorCSV($alunoLista);
    }

    protected function inserePrefixos(&$alunoList) {
        parent::inserePrefixos($alunoList);

        foreach ($alunoList as $aluno) {
            $segmento = $aluno->getSegmento();

            $aluno->setSegmento(self::SEGMENTO_PREFIXO . $segmento);

            $semestre = $aluno->getSemestre();

            $aluno->setSemestre(self::SEMESTRE_PREFIXO . $semestre);
        }
    }

}

$controller = new AlunoEJAController();
$controller->executa();
?>
